package br.com.funaction.eventtcontrollerv2.model;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import br.com.funaction.eventtcontrollerv2.entities.ControleCaixa;
import br.com.funaction.eventtcontrollerv2.util.ConexaoUtil;

public class ControleCaixaDAO {

	Connection con = null;
	PreparedStatement prepStmt = null;
	ResultSet rs = null;
	
	public void add(ControleCaixa controleCaixa) throws SQLException {
		
		String sql = "INSERT INTO funactio_eventt_controller.CONTROLE_CAIXA " + 
				"(ID_RECEITA_DESPESA, " + 
				"DESCRICAO, " + 
				"VALOR, " + 
				"DATA, " + 
				"ID_CATEGORIA, " + 
				"ID_FRANQUIA) " + 
				"VALUES " + 
				"(?, ?, ?, ?, ?, ?);";

		con = ConexaoUtil.getConexao();
		prepStmt = con.prepareStatement(sql);
		
		prepStmt.setInt(1, controleCaixa.getIdReceitaDespesa());
		prepStmt.setString(2, controleCaixa.getDescricao());
		prepStmt.setDouble(3, controleCaixa.getValor());
		prepStmt.setDate(4, new java.sql.Date(controleCaixa.getData().getTime()));
		prepStmt.setInt(5, controleCaixa.getIdCategoria());
		prepStmt.setInt(6, controleCaixa.getIdFranquia());
		
		prepStmt.executeUpdate();
	}

	public List<ControleCaixa> showAll(int idFranquia) throws SQLException {
		
		Calendar calendario = Calendar.getInstance();
		calendario.setTime(new Date());
		int mes = (calendario.get(Calendar.MONTH) + 1); //janeiro = 0, entao add mais um
		int ano = calendario.get(Calendar.YEAR);
		
		String sql = "SELECT * FROM funactio_eventt_controller.CONTROLE_CAIXA WHERE MONTH(DATA)=? AND YEAR(DATA)=? AND ID_FRANQUIA=?;";
		
		con = ConexaoUtil.getConexao();
		prepStmt = con.prepareStatement(sql);
		prepStmt.setInt(1, mes);
		prepStmt.setInt(2, ano);
		prepStmt.setInt(3, idFranquia);
		rs = prepStmt.executeQuery();
		
		List<ControleCaixa> listControleCaixa = new ArrayList<ControleCaixa>();
		
		while(rs.next()){
			
			ControleCaixa controleCaixa = new ControleCaixa();
			
			controleCaixa.setId(rs.getInt("ID"));
			controleCaixa.setIdReceitaDespesa(rs.getInt("ID_RECEITA_DESPESA"));
			controleCaixa.setDescricao(rs.getString("DESCRICAO"));
			controleCaixa.setValor(rs.getDouble("VALOR"));
			controleCaixa.setData(rs.getDate("DATA"));
			controleCaixa.setIdCategoria(rs.getInt("ID_CATEGORIA"));
			controleCaixa.setIdFranquia(rs.getInt("ID_FRANQUIA"));
			
			controleCaixa.setCategoriaString(identificaCategoria(controleCaixa.getIdCategoria()));
			controleCaixa.setReceitaDespesaString(identificaReceitaDespesa(controleCaixa.getIdReceitaDespesa()));
			
			listControleCaixa.add(controleCaixa);
		}
		
		return listControleCaixa;
	}
	
	//gambiii
	private String identificaCategoria(int idCategoria){
		
		String categoriaString = null;
		
		switch(idCategoria){
		
			case 1: categoriaString = "Água";
					break;
					
			case 2: categoriaString = "Alimentação";
					break;
					
			case 3: categoriaString = "Folha de Pagamento";
					break;
			
			case 4: categoriaString = "Luz";
					break;
			
			case 5: categoriaString = "Telefone";
					break;
		}
		
		return categoriaString;
	}
	
	//gambiii
	private String identificaReceitaDespesa(int idReceitaDespesa){
		
		String receitaDespesaString = null;
		
		switch(idReceitaDespesa){
		
			case 1: receitaDespesaString = "Receita";
					break;
					
			case 2: receitaDespesaString = "Despesa";
					break;
		}
		
		return receitaDespesaString;
	}

}












